iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
DevOps

Golang X DevOps系列 第 9

Day09 - 增加command info

  • 分享至 

  • xImage
  •  

增加指令

  • 還記得昨天我們建了一個net的資料夾吧
  • 現在要在裡面新增檔案
# 增加一個 ping.go 的檔案
cobra-cli add ping
# 增加一個 net.go 的檔案
cobra-cli add net
  • 把檔案移成下面的樣子

CLI_TOOL/ # 示意圖
├── cmd   
│    ├──net/
│    │   ├─ net.go
│    │   └─ ping.go
│    └──root.go

更改 net.go

  • 接著把 net.goping.go 的 package 改成 net

  • netCmd 變數把它改成全域變數 NetCmd

  • 而後把 net.go 的介紹改掉 變成你想要的介紹

  • Run function 裡的Print改掉,並把init()rootCmd.AddCommand刪掉

更改 root.go

  • init() func 之前添加 addSubcommandSet()
func addSubcommandPalettes() {
	rootCmd.AddCommand(net.NetCmd)
}

  • 並 import net package

  • 在init 的最下方呼叫 addSubcommandPalettes()

修改 ping.go

  • 一樣把把init() 裡的 rootCmd刪掉
  • init()加上下列兩行
設定 -h 會出現的格式
pingCmd.Flags().StringVarP(&urlPath, "url", "u", "", "The url to ping")
# 把pingCmd放在net底下
NetCmd.AddCommand(pingCmd)
  • 順便在上面宣告 url 變數
var (
	urlPath string
)

測試指令

  • 打上
go run main.go net ping -h
  • 結果如下

明天要把ping指令完成喔


上一篇
Day08 - 寫出屬於你自己的 Tool, it's cool.
下一篇
Day10 - 完成你的指令 讓它屬於你
系列文
Golang X DevOps30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言